package com.exampleyyy.demoyyy.ShiTi;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;

import java.time.LocalDateTime;
/**
 * 用户地址簿实体类
 *
 * 该类用于存储用户地址簿的相关信息，包括收件人、性别、电话号码以及省市区等详细地址信息。
 * 同时也记录了地址记录的创建时间、更新时间、操作用户ID等元数据信息。
 */
@Data
public class AddressBook {
    // 主键ID
    private Long id;
    // 用户ID，用于关联地址簿属于哪个用户
    private Long userId;
    // 收件人姓名
    private String consignee;
    // 收件人性别
    private String sex;
    // 收件人电话号码
    private String phone;
    // 省份编码
    private String provinceCode;
    // 省份名称
    private String provinceName;
    // 城市编码
    private String cityCode;
    // 城市名称
    private String cityName;
    // 区县编码
    private String districtCode;
    // 区县名称
    private String districtName;
    // 地址详细信息
    private String detail;
    // 地址标签，如“家”、“公司”等
    private String label;
    // 是否为默认地址，1表示是，0表示否o
    private Integer isDefault;
    // 创建时间，使用LocalDateTime类型并自定义序列化和反序列化方式
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @TableField(fill = FieldFill.INSERT) // 自动填充策略,只有第一次插入的时候,填充
    private LocalDateTime createTime;

    // 更新时间，使用LocalDateTime类型并自定义序列化和反序列化方式
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @TableField(fill = FieldFill.INSERT_UPDATE) // 自动填充策略,第一次插入或者有修改的时候就填充
    private LocalDateTime updateTime;

    // 创建用户ID，自动填充
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    // 更新用户ID，自动填充
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}